import {createRouter, createWebHashHistory} from 'vue-router'
import routes from './routes'
import {useUserStore} from '@/store'

const router = createRouter({
    history: createWebHashHistory(),
    routes,
    //滚动行为
    scrollBehavior(to, from, savedPosition) {
        // 始终滚动到顶部
        return {top: 0}
    }
})

//全局守卫：前置守卫（在路由跳转之间进行判断）
router.beforeEach(async (to, from) => {
    //to:获取到要跳转到的路由信息
    //from：获取到从哪个路由跳转过来来的信息
    //next: next() 放行  next(path) 放行  可由return代替
    const store = useUserStore()
    let token = store.token
    let name = store.userInfo.name
    if (token) {
        if (to.path == '/login' || to.path == '/register') {
            return '/home'
        } else {
            if (name) {
                return
            }
            try {
                await store.getUserInfo()
                return
            } catch (e) {
                //token失效从新登录
                await store.userLogout()
                return '/login'
            }
        }
    } else {
        //未登录：不能去交易相关、不能去支付相关【pay|paysuccess】、不能去个人中心
        //未登录去上面这些路由-----登录
        let toPath = to.path
        if (toPath.indexOf('/trade') != -1 || toPath.indexOf('/pay') != -1 || toPath.indexOf('/center') != -1) {
            //把未登录的时候想去而没有去成的信息，存储于地址栏中【路由】
            return '/login?redirect=' + toPath
        } else {
            return
        }
    }
})

export default router
